package com.glela.order.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.glela.order.model.Commision;
import com.glela.order.model.OrderObject;
import com.glela.order.vo.CommisionUpdateStatusVo;
import com.glela.order.vo.ParamsCommisionVo;

public interface CommisionMapper {
	int deleteByPrimaryKey(Long id);

	int insert(Commision record);

	int insertSelective(Commision record);
	
	int batchInsert(List<Commision> list);

	Commision selectByPrimaryKey(Long id);

	/** 根据父单ID获取分润明细 */
	List<Commision> selectByOrderObjectIdForCommision(long orderObjectId);
	
	/**
	 * <dl>
	 * <dt>查询未处理分佣信息(仅查找账务类型是 1 2 3 17{开店 直接 间接分佣 角色级别分佣})</dt>
	 * </dl>
	 * @param orderObjectList
	 * @return List<Commision>
	 * @author gaoweiqi
	 */
	List<Commision> selectInOrderObjectIdForCommision(List<OrderObject> orderObjectList);
	/**
	 * <dl>
	 * <dt>批量更新分佣结果为已处理1</dt>
	 * <dd>未处理可使用</dd>
	 * </dl>
	 * @param commisionList item.id 分佣明细id
	 * @return int
	 * @author zls
	 */
	int updateResultInId(@Param("list")List<Commision> commisionList,@Param("resultTime")String resultTime);

	/**
	 * 
	 * @param record
	 * @return
	 */
	int updateByPrimaryKeySelective(Commision record);

	/**
	 * 
	 * @param record
	 * @return
	 */
	int updateByPrimaryKey(Commision record);
	/**
	 * 查询子订单id分佣用
	 * 
	 * @param userId
	 * @return
	 */
	public List<Integer> selectCommisionOrderInfoIdByUserIdtwo(long userId);

	/**
	 * 查询子订单id （达人订单）
	 * 
	 * @param userId
	 * @return
	 */
	public List<Integer> selectCommisionOrderInfoIdByUserId(@Param("userId")long userId,@Param("page")int page,@Param("pageSize")int pageSize);

	public int selectCommisionOrderInfoIdByUserIdTwo(@Param("userId")long userId);
	
	/**
	 * 查询交易中的订单
	 * 
	 * @param userId
	 * @return
	 */
	public List<Integer> selectCommisionOrderInfoId(long userId);

	/**
	 * 累计获得佣金
	 * 
	 * @param userId
	 * @return
	 */
	public int selectCommisionSumFee(long userId);

	/**
	 * 订单数量
	 * 
	 * @param userId
	 * @return
	 */
	public int selectCommisioncountid(long userId);

	/**
	 * 统计有多少个人有佣金
	 * 
	 * @return
	 */
	public int selectUserNumWhereHasCommision();

	/**
	 * 查出有多少人佣金比你少
	 * 
	 * @param userId
	 * @return
	 */
	public int selectUserNumWhereLessThanYou(@Param("userId") long userId);

	/** gaoweiqi **/
	/**
	 * 修改分佣的状态为禁用 (只处理账务类型是1 2 3 17的(开店分佣，直卖分佣，间接分佣 用户角色分佣))
	 * @param id
	 * @return
	 */
	int updateCommisionStatusByOrderObjectId(Long orderObjectId);
	/** gwq **/
	/**
	 * 修改分佣的状态为禁用(只处理账务类型是1 2 3 17的(开店分佣，直卖分佣，间接分佣 用户角色分佣))
	 * @param id
	 * @return
	 */
	int updateCommisionStatusByOrderDetailId(Long orderDetailId);
	/** MaoZeYao **/

	public int selectCommisionSumFeeBByOrderDetailId(long orderDetailId);

	/**
	 * <dl>
	 * <dt>查询余额事务记录</dt>
	 * </dl>
	 * @param queryParams
	 * @return List<Commision>
	 * @author zls
	 * @date 2017年9月6日 下午1:35:23
	 */
	List<Commision> selectByBussinessTypes(ParamsCommisionVo queryParams);
	/**
	 * <dl>
	 * <dt>查询余额事务记录 仅查询账务类型是（1,2,3,17的）</dt>
	 * </dl>
	 * @param queryParams
	 * @return List<Commision>
	 * @author gwq
	 * @date 2017年9月11日 下午1:35:23
	 */
	List<Commision> selectByDetailID(@Param("detailID") Long detailID);

	/**
	 * <dl>
	 * <dt>查询已处理的余额事务记录 仅查询账务类型是（1,2,3,17的）</dt>
	 * </dl>
	 * @param queryParams
	 * @return List<Commision>
	 * @author gwq
	 * @date 2017年11月07日 下午1:35:23
	 */
	List<Commision> selectdoneBusinessByDetailID(@Param("detailID") Long detailID);
	/**
	 * <dl>
	 * <dt>批量更新余额事务状态</dt>
	 * </dl>
	 * @param updateCommission
	 * @return int
	 * @author zls
	 * @date 2017年9月6日 下午1:35:54
	 */
	int batchUpdateStatus(List<CommisionUpdateStatusVo> updateCommission);
	
	//查询余额事务重复
	List<Commision> selectRepeatCommision( );

	List<Commision> selectfreightByBussinessTypesAndsourcesID(@Param("typeID")int typeID,@Param("sourceID") Long sourceID);

	/**
	 * <dl>
	 * <dt>查询相关订单的所有佣金</dt>
	 * </dl>
	 * @param ID
	 * @return Commision
	 * @author gwq
	 * @date 2018年5月7日 下午1:35:54
	 */
	List<Commision> selectAllByOrderObjId(@Param("objID")Long id);
	
}
